home *** CD-ROM | disk | FTP | other *** search
- #include <Values.h>
-
- #define kBaseResID 128
- #define kMoveToFront (WindowPtr)-1L
- #define kSleep MAXLONG
-
- #define kRowHeight 14
- #define kFontSize 9
-
- #define kMouseDown 1
- #define kMouseUp 2
- #define kKeyDown 3
- #define kAutoKey 4
-
- /*************/
- /* Globals */
- /*************/
-
- Boolean gDone;
- short gLastEvent = 0;
-
- /***************/
- /* Functions */
- /***************/
-
- void ToolBoxInit( void );
- void WindowInit( void );
- void EventLoop( void );
- void DoEvent( EventRecord *eventPtr );
- void HandleMouseDown( EventRecord *eventPtr );
- void DrawContents( void );
- void SelectEvent( short eventType );
- void DrawFrame( short eventType );
-
- /******************************** main *********/
-
- void main( void )
- {
- ToolBoxInit();
- WindowInit();
-
- EventLoop();
- }
-
- /*********************************** ToolBoxInit */
-
- void ToolBoxInit( void )
- {
- InitGraf( &thePort );
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit();
- InitDialogs( nil );
- InitCursor();
- }
-
- /******************************** WindowInit *********/
-
- void WindowInit( void )
- {
- WindowPtr window;
-
- window = GetNewWindow( kBaseResID, nil, kMoveToFront );
-
- if ( window == nil )
- {
- SysBeep( 10 ); /* Couldn’t load the WIND resource!!! */
- ExitToShell();
- }
-
- SetPort( window );
- TextSize( kFontSize );
-
- ShowWindow( window );
- }
-
- /******************************** EventLoop *********/
-
- void EventLoop( void )
- {
- EventRecord event;
-
- gDone = false;
- while ( gDone == false )
- {
- if ( WaitNextEvent( everyEvent, &event, kSleep, nil ) )
- DoEvent( &event );
- }
- }
-
- /************************************* DoEvent *********/
-
- void DoEvent( EventRecord *eventPtr )
- {
- switch ( eventPtr->what )
- {
- case mouseDown:
- SelectEvent( kMouseDown );
- HandleMouseDown( eventPtr );
- break;
- case mouseUp:
- SelectEvent( kMouseUp );
- break;
- case keyDown:
- SelectEvent( kKeyDown );
- break;
- case autoKey:
- SelectEvent( kAutoKey );
- break;
- case updateEvt:
- BeginUpdate( (WindowPtr)eventPtr->message );
- DrawContents();
- EndUpdate( (WindowPtr)eventPtr->message );
- }
- }
-
- /******************************** HandleMouseDown *********/
-
- void HandleMouseDown( EventRecord *eventPtr )
- {
- WindowPtr window;
- short thePart;
-
- thePart = FindWindow( eventPtr->where, &window );
-
- if ( thePart == inGoAway )
- gDone = true;
- }
-
- /******************************** DrawContents *********/
-
- void DrawContents( void )
- {
- short i;
- WindowPtr window;
-
- window = FrontWindow();
-
- for ( i=1; i<=3; i++ )
- {
- MoveTo( 0, (kRowHeight * i) - 1 );
- LineTo( window->portRect.right,
- (kRowHeight * i) - 1 );
- }
-
- MoveTo( 4, 9 );
- DrawString( "\pmouseDown" );
-
- MoveTo( 4, 9 + kRowHeight );
- DrawString( "\pmouseUp" );
-
- MoveTo( 4, 9 + kRowHeight*2 );
- DrawString( "\pkeyDown" );
-
- MoveTo( 4, 9 + kRowHeight*3 );
- DrawString( "\pautoKey" );
-
- if ( gLastEvent != 0 )
- DrawFrame( gLastEvent );
- }
-
- /************************************* SelectEvent ********/
-
- void SelectEvent( short eventType )
- {
- Rect r;
- WindowPtr window;
-
- window = FrontWindow();
- r = window->portRect;
-
- if ( gLastEvent != 0 )
- {
- ForeColor( whiteColor );
- DrawFrame( gLastEvent );
- ForeColor( blackColor );
- }
-
- DrawFrame( eventType );
-
- gLastEvent = eventType;
- }
-
- /************************************* DrawFrame *********/
-
- void DrawFrame( short eventType )
- {
- Rect r;
- WindowPtr window;
-
- window = FrontWindow();
- r = window->portRect;
-
- r.top = kRowHeight * (eventType - 1);
- r.bottom = r.top + kRowHeight - 1;
-
- FrameRect( &r );
- }
-